/*
 * AdministradorView.java
 */

package administrador;

import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 * The application's main frame.
 */
public class AdministradorView extends FrameView {
Usuario user;
int bodega;
Conexion c=new Conexion();




//Parametros para llenado de Botones y Opciones de MenuMenuItem
String[] vectMenus;
String[][] vectFacturacion;
String[][] vectNotaVenta;
String[][] vectDebitoCredito;
String[][] vectInventario;
String[][] vectExtras;

String[][] vectConfiguracion;
String[][] vectReportes;
String[][] vectContabilidad;

Vector opciones;
Vector vmenus;



//Creo un vector para almacenar las ventanas activas:c=
Vector ventanas;

//Creo el Timer
administrador.Timer timer;

    public AdministradorView(SingleFrameApplication app) {
        super(app);

        initComponents();
        //Instancion el Vector donde guardo lasVentanas
        ventanas=new Vector();
        
               
        // status bar initialization - message timeout, idle icon and busy animation, etc
        ResourceMap resourceMap = getResourceMap();
        int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
        messageTimer = new Timer(messageTimeout, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                statusMessageLabel.setText("Todo Bien");
            }
        });
        messageTimer.setRepeats(false);
        int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
        for (int i = 0; i < busyIcons.length; i++) {
            busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
        }
        busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
                statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
            }
        });
        idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
        statusAnimationLabel.setIcon(idleIcon);
        progressBar.setVisible(false);

        // connecting action tasks to status bar via TaskMonitor
        TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
        taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                String propertyName = evt.getPropertyName();
                if ("started".equals(propertyName)) {
                    if (!busyIconTimer.isRunning()) {
                        statusAnimationLabel.setIcon(busyIcons[0]);
                        busyIconIndex = 0;
                        busyIconTimer.start();
                    }
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(true);
                } else if ("done".equals(propertyName)) {
                    busyIconTimer.stop();
                    statusAnimationLabel.setIcon(idleIcon);
                    progressBar.setVisible(false);
                    progressBar.setValue(0);
                } else if ("message".equals(propertyName)) {
                    String text = (String)(evt.getNewValue());
                    statusMessageLabel.setText((text == null) ? "" : text);
                    messageTimer.restart();
                } else if ("progress".equals(propertyName)) {
                    int value = (Integer)(evt.getNewValue());
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(false);
                    progressBar.setValue(value);
                }
            }
        });
       
       
    }

       
    
    public void caracteristicas(){
        tp_controles.addTab("Presentacion",new Presentacion(this));
    }
    
    public void setTimer(administrador.Timer timer){
        this.timer=timer;
    }

    @Action
    public void showAboutBox() {
        if (aboutBox == null) {
            JFrame mainFrame = AdministradorApp.getApplication().getMainFrame();
            aboutBox = new AdministradorAboutBox(mainFrame);
            aboutBox.setLocationRelativeTo(mainFrame);
        }
        AdministradorApp.getApplication().show(aboutBox);
    }

    
    @Action
    public void cargoDatosUsuario(){
    
    if(noDefParametros()||noDefDiario()||noDefESI()){
    //Pregunto si es la Primera Configuracion del Sistema:        
    opcionesConfiguracion();
    configInicial confI=new configInicial(c,bodega,user,this);
    }else{ 
    //Defino para usuarios Morosos    :
    //La despues de una fecha .
        String fecha=new java.sql.Date(System.currentTimeMillis()).toString();
        String vect[]=fecha.split("-");
        int ano=Integer.valueOf(vect[0]);
        int mes=Integer.valueOf(vect[1]);
        int dia=Integer.valueOf(vect[2]);
        
                
        
       // if(mes<11&&dia<32){
        //if(mes<13&&dia<32&&ano<2020){
       //bomba de tiempo 
        
        //Defino los permisos para Admnistradores:
            if(user.getPrivilegio().equals("m")){
                opcionesAdministrador();
            }
          //Caso que sea el Usuario un Vendedor
            if(user.getPrivilegio().equals("e")){
                opcionesEmpleado();
            }
        /*}else{
        Aviso a=new Aviso();
        JOptionPane.showMessageDialog(a,"Periodo de Prueba Terminado!! LLame a Ing. daniel1 Silva 084938785","Error",JOptionPane.ERROR_MESSAGE); 
        a.dispose();
        }*/
        }
    
    }
    
    //Estas son las Opciones del Administrador:
    public void opcionesAdministrador(){
               
        vectMenus=new String[]{"Facturacion","Nota de Venta","Nota Credito-Debito","Inventarios","Extras","Contabilidad","Reportes","Configuracion"};  
      //Defino las opciones para los Menus  {Opciones,Acciones}
        
        vectFacturacion=new String[][]{{"Nueva Factura","NuevaFactura","facturar.png"},
                                        {"Ventas x Mayor","ventaMayor","facturaMayor.png"},
                                        {"Visor Facturas","NuevaAnulacion","visor.png"},
                                        {"Facturas Anuladas","VisorAnulacion","anular.png"}
                                        };
        
        vectNotaVenta=new String[][]{{"Nota de Venta","notadeVenta","facturar.png"},                               
                                {"Visor Nota de Venta","anulaNota","visor.png"},
                                {"Notas Anuladas","visorAnuladas","anular.png"}
                                };
                                
        vectDebitoCredito=new String[][]{{"Nota de Credito","notadeCredito","nota_credito.png"},
                                    {"Nota de Debito","notadeDebito","nota_debito.png"}, 
                                    {"Visor Creditos-Debitos","visorCreditoDebito","visor.png"}, 
                                    {"Anulaciones Creditos-Debitos","anulacionCreditoDebito","anular.png"} 
                                    };
         
        vectInventario =new String[][]{
                                    {"Compras","KardexIn","entra.png"},
                                    {"Devolucion en Compras","KardexOut","sale.png"},
                                    {"Visor Compras-Dev","visorKardex","visor.png"},
                                    {"Anulacion Compras-Dev","anulacionKardex","kanulado.png"},
                                    {"Nuevo Producto","NuevoProducto","package.png"},
                                    {"Historial de Prodcutos","HistProductos","historialProductos.png"},
                                    {"Inventarios","AdminInventarios","inventarios.png"},
                                    {"Pedidos","adminPedidos","package.png"}
                                        };
       
        vectExtras =new String[][]{{"Auditoria","listaAuditorias","auditoria.png"},
                                      {"Pagos-Tarjeta","creditosOtorgados","tarjeta.png"},
                                      {"Deudas","adminDeudas","prestamos.png"},
                                      {"Gastos e Ingresos","adminGastosI","gastos.png"},
                                      {"Clientes","adminClientes","clientes.png"},
                                      {"Proveedores","adminProveedores","proveedores.png"},
                                      {"Cambios","procesoCambios","cambio.png"}
                                     };
        
        
        
        vectContabilidad=new String[][]{{"Creacion de Cuenta","creaCuentas","cuenta.png"},
                                        {"Situacion Inicial","situacionInicial","estadoInicial.png"},
                                        {"Diario General","diarioGeneral","diario.png"}
                                        };
        
        vectReportes=new String[][]{{"Reportes Clientes","reportesdeClientes","reportesCliente.png"},
                                    {"Reportes Productos","reporteProductos","reportesProductos.png"},
                                    {"Reportes Inventarios","reporteInventarios","reportesInventario.png"},
                                    {"Reportes Ventas","reporteVentas","reportesVentas.png"}
                                    };
        
        
        vectConfiguracion=new String[][]{
                                        {"Parametros","ModificarParametros","prametros.png"},
                                        {"Usuarios","EstablecerUsuarios","usuarios.png"},
                                        {"Bodegas","NuevaBodega","bodega.png"},
                                        {"Categorias","NuevaCategoria","modificaciones.png"},
                                        {"Terminales","NuevaTerminal","terminales.png"},
                                        {"XML","generarXML","hoja_xml.png"}
                                        };
        
        opciones=new Vector();
        opciones.add(vectFacturacion);
        opciones.add(vectNotaVenta);
        opciones.add(vectDebitoCredito);
        opciones.add(vectInventario);
        opciones.add(vectExtras);
        opciones.add(vectContabilidad);
        opciones.add(vectReportes);
        opciones.add(vectConfiguracion);
     
        
        
        
    }
    
    //opciones del Empleado
    public void opcionesEmpleado(){
               
        vectMenus=new String[]{"Facturacion","Nota Credito-Debito","Inventarios","Extras"};
      //Defino las opciones para los Menus  {Opciones,Acciones}
        
        vectFacturacion=new String[][]{{"Nueva Factura","NuevaFactura","facturar.png"},
                                        {"Visor Facturas","NuevaAnulacion","visor.png"},
                                        };
        
        /*vectNotaVenta=new String[][]{{"Nota de Venta","notadeVenta","facturar.png"},
                                {"Visor Nota de Venta","anulaNota","visor.png"},
                                {"Notas Anuladas","visorAnuladas","anular.png"}
                                };
          */
        vectDebitoCredito=new String[][]{{"Nota de Credito","notadeCredito","nota_credito.png"},
                                    {"Nota de Debito","notadeDebito","nota_debito.png"},
                                    {"Visor Creditos-Debitos","visorCreditoDebito","visor.png"}
                                    //{"Anulaciones Creditos-Debitos","anulacionCreditoDebito","anular.png"}
                                    };
         
        vectInventario =new String[][]{
                                    {"Nuevo Producto","NuevoProducto","package.png"},
                                    {"Compras","KardexIn","entra.png"},
                                    //{"Devolucion en Compras","KardexOut","sale.png"},
                                    {"Visor Compras-Dev","visorKardex","visor.png"},
                                    {"Pedidos","adminPedidos","package.png"}
                                    };
       
        vectExtras =new String[][]{ {"Clientes","adminClientes","clientes.png"},
                                    {"Proveedores","adminProveedores","usuario.png"}
                                    
                                    };
        
        
        opciones=new Vector();
        opciones.add(vectFacturacion);
        //opciones.add(vectNotaVenta);
        opciones.add(vectDebitoCredito);
        opciones.add(vectInventario);
        opciones.add(vectExtras);
        
        
    }
    
    //opciones del Empleado
    public void opcionesConfiguracion(){
         vectMenus=new String[]{"Contabilidad","Configuracion"};  
      //Defino las opciones para los Menus  {Opciones,Acciones}
       
        vectContabilidad=new String[][]{{"Creacion de Cuenta","creaCuentas","bank.png"},
                                        {"Situacion Inicial","situacionInicial","bank.png"},
                                        {"Diario General","diarioGeneral","bank.png"}
                                        };
        vectConfiguracion=new String[][]{
                                        {"Parametros","ModificarParametros","prametros.png"},
                                        {"Usuarios","EstablecerUsuarios","usuarios.png"},
                                        {"Bodegas","NuevaBodega","bodega.png"},
                                        {"Terminales","NuevaTerminal","terminales.png"}
                                        };
        
        opciones=new Vector();
        opciones.add(vectContabilidad);
        opciones.add(vectConfiguracion);
     
    }
    
    public void limpiarTodo(){
    herramientas.removeAll();
    opcionesVent.removeAll();
    menuBar.removeAll();
    }
    
    
    
    @Action
    public void refrescar(){
    limpiarTodo();    
     //System.out.println("El Usuario tiene el privilegio:"+user.getPrivilegio());
      //Para el caso que sea Administrador o Empleado:
        cargoDatosUsuario();
      //Generar los menus,botones y acciones en base a los datos especificados
        //Lleno los Menus:
        vmenus=new Vector();
        
        int tamano=vectMenus.length;
        for(int contador=0;contador<tamano;contador++){
        javax.swing.JMenu menu=new javax.swing.JMenu(); 
        menu.setName(vectMenus[contador]);
        menu.setText(vectMenus[contador]);
        vmenus.add(menu);
        menuBar.add(menu);
        }
        
        //Recojo el Mapa de Acciones:
         javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(administrador.AdministradorApp.class).getContext().getActionMap(AdministradorView.class, this);
        
        //Lleno las opciones de los menus:aboutMenuItem   
        int tamanoMenus=vectMenus.length;
         
       
          for (int i = 0; i < tamanoMenus; i++) {
              javax.swing.JMenu omenu = (javax.swing.JMenu) vmenus.elementAt(i);
              String[][] op = (String[][]) opciones.elementAt(i);
              
              tamano = op.length;
              for (int contador = 0; contador < tamano; contador++) {
                  javax.swing.JMenuItem item = new javax.swing.JMenuItem();
                  item.setAction(actionMap.get(op[contador][1].toString())); 
                  
                  
                  //Le doy el Icono
                  ImageIcon icon=createImageIcon(op[contador][2],"Nueva Factura");
                  item.setIcon(icon);
                  item.setText(op[contador][0]);
                  omenu.add(item);
              }
          }

      
        
    }
    
   
    
    public void seleccionarTab(){
      int ultimotab=tp_controles.getTabCount();
      tp_controles.setSelectedIndex(ultimotab-1);
    };
    
    
   
    
    @Action
    public void reporteVentas(){
          VentKardex vk=new VentKardex(c,bodega,user);
          ventanas.add(vk);
          tp_controles.addTab("Reporte - Ventas", vk);
          seleccionarTab();
          
          //tp_controles.updateUI();
    }
    
    
    @Action
    public void generarXML(){
          documentosXml dxml=new documentosXml(c,bodega);
         
    }
    
    
    @Action
    public void adminGastosI(){
      gastosIngresos gi=new gastosIngresos(c,bodega,user);
    
    }
    
    @Action
    public void adminClientes(){
      CreaCliente cc=new CreaCliente(c,"",user);
    }
    
    @Action
    public void adminProveedores(){
      CreaCliente cc=new CreaCliente(c,"P",user);
    }

    @Action
    public void adminPedidos(){
     AdminPedReposicion app=new AdminPedReposicion(c,bodega,user);
      //Almaceno la ventana en el vector de ventanas activas:split
      ventanas.add(app);
      String tabnombre="Pedidos ";
      tp_controles.addTab(tabnombre,app);
      seleccionarTab();
     
    }
            
    
    @Action
    public void reportesdeClientes(){
     reporteClientes r=new reporteClientes(c,bodega,user);
    }
    
    @Action
    public void reporteInventarios(){
     report_DtlInvent r=new report_DtlInvent(c);
    }
    
    @Action
    public void ventaMayor(){
      if(autorizacionCaduca()){
      //JOptionPane.showMessageDialog(this,"Hay un error en la clave","Informacion",JOptionPane.INFORMATION_MESSAGE);
      }else{
      Facturacion f=new Facturacion(c,bodega,user,0,this.tp_controles,"Mayor");
      //Almaceno la ventana en el vector de ventanas activas:split
     
      f.establecerReferencia(this);
      
      int numeroFact=f.numeroFactura();
      String tabnombre="Facturacion - Facturar #"+numeroFact;
      ventanas.add(f);
      tp_controles.addTab(tabnombre,f);
      seleccionarTab();
      }
      
    }
    
    Facturacion f;
    @Action
    public void NuevaFactura(){
     f=new Facturacion(c,bodega,user,0,this.tp_controles,"");
     //Almaceno la ventana en el vector de ventanas activas:
     
      if(autorizacionCaduca()){
      //La autorizacion esta caduca:
        JOptionPane.showMessageDialog(f,"Su Autorizacion para Facturas esta Caducada !!","Informacion",JOptionPane.INFORMATION_MESSAGE);
         
      }else if(noDefComprobante("Factura")){
      //No se ha asignado un secuencial al documento
        JOptionPane.showMessageDialog(f,"No se ha asignado un Secuencial para este Comprobante!","Informacion",JOptionPane.INFORMATION_MESSAGE);
        
      }else{
          
     
      f.establecerReferencia(this);
      
      int numeroFact=f.numeroFactura();
      String tabnombre="Facturacion - Facturar #"+numeroFact;
      ventanas.add(f);
      tp_controles.addTab(tabnombre,f);
      seleccionarTab();
      }
     menuBar.updateUI();
     
    }
    
    @Action
    public void NuevaAnulacion(){
        Facturacion f=new Facturacion(c,bodega,user,0,tp_controles,"");
        f.desactivaControles();
        
        //Almaceno la ventana en el vector de ventanas activas:
        ventanas.add(f);
        tp_controles.addTab("Facturacion - Anular",f);
        seleccionarTab();
        
        
    }
    
    @Action
    public void VisorAnulacion(){
        
      Facturacion f=new Facturacion(c,bodega,user,1,tp_controles,"");
      f.desactivaControles();
      f.btn_anulaFac.setVisible(false);

      f.txt_motAnula.setEditable(false);
      f.lbl_etiqueta.setVisible(false);
      f.lbl_anulacion.setText("");
      f.lbl_fechaAnulacion.setVisible(true);
      f.lbl_etiqueta.setVisible(true);
      //Almaceno la ventana en el vector de ventanas activas:
      ventanas.add(f);
      tp_controles.addTab("Facturacion - Visor Anuladas", f);    
      seleccionarTab();
      
    }
    
    Nota_de_Venta notaVenta;
    @Action
    public void notadeVenta(){
      notaVenta=new Nota_de_Venta(c,bodega,user,0,this.tp_controles);
      //Almaceno la ventana en el vector de ventanas activas:split
       
      if(autorizacionCaduca()){
      //La autorizacion esta caduca:
        JOptionPane.showMessageDialog(notaVenta,"Su Autorizacion para Notas de Venta esta Caducada !!","Informacion",JOptionPane.INFORMATION_MESSAGE);
         
      }else if(noDefComprobante("Nota de Venta")){
      //No se ha asignado un secuencial al documento
        JOptionPane.showMessageDialog(notaVenta,"No se ha asignado un Secuencial para este Comprobante!","Informacion",JOptionPane.INFORMATION_MESSAGE);
        
      }else{  
       
     //System.out.println("Le Selecciono al tab de nota de venta");
      
      
      notaVenta.establecerReferencia(this);
      
      int numeroFact=notaVenta.numeroFactura();
      String tabnombre="NotadeVenta - Nota #"+numeroFact;
      ventanas.add(notaVenta);
      tp_controles.addTab(tabnombre,notaVenta);
      seleccionarTab();
      }
      menuBar.updateUI();
    }
    
    @Action
    public void anulaNota(){ 
      Nota_de_Venta notaVenta=new Nota_de_Venta(c,bodega,user,0,this.tp_controles);
      notaVenta.desactivaControles();
      notaVenta.establecerReferencia(this);
      int numeroFact=notaVenta.numeroFactura();
      String tabnombre="NotadeVenta - Nota #"+numeroFact;
      ventanas.add(notaVenta);
      tp_controles.addTab(tabnombre,notaVenta);
      seleccionarTab();
    }
    
    @Action
    public void visorAnuladas(){ 
      Nota_de_Venta notaVenta=new Nota_de_Venta(c,bodega,user,1,this.tp_controles);
      notaVenta.desactivaControles();
      notaVenta.desaContVisor();
      notaVenta.establecerReferencia(this);
      int numeroFact=notaVenta.numeroFactura();
      String tabnombre="NotadeVenta - Nota #"+numeroFact;
      ventanas.add(notaVenta);
      tp_controles.addTab(tabnombre,notaVenta);
      seleccionarTab();
    }
    
    
    NotaCD notaCredito;
    @Action
    public void notadeCredito(){
      notaCredito=new NotaCD(c,bodega,user,0,1,this.tp_controles);
      //Almaceno la ventana en el vector de ventanas activas:split
      
      if(autorizacionCaduca()){
      //La autorizacion esta caduca:
        JOptionPane.showMessageDialog(notaVenta,"Su Autorizacion para Notas de Credito esta Caducada !!","Informacion",JOptionPane.INFORMATION_MESSAGE);
         
      }else if(noDefComprobante("Nota de Credito")){
      //No se ha asignado un secuencial al documento
        JOptionPane.showMessageDialog(notaVenta,"No se ha asignado un Secuencial para este Comprobante!","Informacion",JOptionPane.INFORMATION_MESSAGE);
        
      }else{  
      
      notaCredito.establecerReferencia(this);
      
      int numeroFact=notaCredito.numeroFactura();
      String tabnombre="NotadeCredito - Nota #"+numeroFact;
      ventanas.add(notaCredito);
      tp_controles.addTab(tabnombre,notaCredito);
      seleccionarTab();
      }
      menuBar.updateUI();
    }
    
    NotaCD notaDebito;
    @Action
    public void notadeDebito(){
      notaDebito=new NotaCD(c,bodega,user,0,0,this.tp_controles);
      //Almaceno la ventana en el vector de ventanas activas:split
      if(autorizacionCaduca()){
      //La autorizacion esta caduca:
        JOptionPane.showMessageDialog(notaVenta,"Su Autorizacion para Notas de Debito esta Caducada !!","Informacion",JOptionPane.INFORMATION_MESSAGE);
         
      }else if(noDefComprobante("Nota de Debito")){
      //No se ha asignado un secuencial al documento
        JOptionPane.showMessageDialog(notaVenta,"No se ha asignado un Secuencial para este Comprobante!","Informacion",JOptionPane.INFORMATION_MESSAGE);
        
      }else{   
      
     
      notaDebito.establecerReferencia(this);
      
      int numeroFact=notaDebito.numeroFactura();
      String tabnombre="NotadeDebito - Nota #"+numeroFact;
      ventanas.add(notaDebito);
      tp_controles.addTab(tabnombre,notaDebito);
      seleccionarTab();
      }
      menuBar.updateUI();
    }
    
    @Action
    public void visorCreditoDebito(){
      NotaCD notaCD=new NotaCD(c,bodega,user,0,2,this.tp_controles);
      notaCD.desactivaControles();
      notaCD.establecerReferencia(this);
      int numeroFact=notaCD.numeroFactura();
      String tabnombre="VisorCreditoDebito - Nota #"+numeroFact;
      ventanas.add(notaCD);
      tp_controles.addTab(tabnombre,notaCD);
      seleccionarTab();
        
    }
    
    @Action
    public void anulacionCreditoDebito(){
      NotaCD notaCD=new NotaCD(c,bodega,user,1,3,this.tp_controles);
      notaCD.desactivaControles();
      notaCD.desaContVisor();
      notaCD.establecerReferencia(this);
      notaCD.areaMotSc.setVisible(true);
      notaCD.lbl_mod.setVisible(true);
      int numeroFact=notaCD.numeroFactura();
      String tabnombre="AnuladosCreditoDebito - Nota #"+numeroFact;
      ventanas.add(notaCD);
      tp_controles.addTab(tabnombre,notaCD);
      seleccionarTab();
        
    }
    
    
    @Action
    public void NuevoProducto(){
      Productos p=new Productos(c,bodega,user);    
    //Almaceno la ventana en el vector de ventanas activas:
        ventanas.add(p);
   
      tp_controles.addTab("Producto - Nuevo", p);
      seleccionarTab();
        
        
    }
    
    @Action
    public void KardexIn(){
        
      KardexInOut f=new KardexInOut(c,bodega,user,0,0,this.tp_controles);
      //Almaceno la ventana en el vector de ventanas activas:split
     
      f.establecerReferencia(this);
      
      int numeroFact=f.numeroFactura();
      String tabnombre="Kardex - Entradas #"+numeroFact;
      ventanas.add(f);
      tp_controles.addTab(tabnombre,f);
      seleccionarTab();
    }
    @Action
    public void KardexOut(){
        
      KardexInOut f=new KardexInOut(c,bodega,user,0,1,this.tp_controles);
      //Almaceno la ventana en el vector de ventanas activas:split
     
      f.establecerReferencia(this);
      
      int numeroFact=f.numeroFactura();
      String tabnombre="Kardex - Salidas #"+numeroFact;
      ventanas.add(f);
      tp_controles.addTab(tabnombre,f);
      seleccionarTab();
    }
    
    @Action
    public void visorKardex(){
      KardexInOut kardex=new KardexInOut(c,bodega,user,0,2,this.tp_controles);
      kardex.desactivaControles();
      kardex.establecerReferencia(this);
      int numeroFact=kardex.numeroFactura();
      String tabnombre="VisorCreditoDebito - Nota #"+numeroFact;
      ventanas.add(kardex);
      tp_controles.addTab(tabnombre,kardex);
      seleccionarTab();
        
    }
    
    @Action
    public void anulacionKardex(){
      KardexInOut kardex=new KardexInOut(c,bodega,user,1,3,this.tp_controles);
      kardex.desactivaControles();
      kardex.desaContVisor();
      kardex.establecerReferencia(this);
      int numeroFact=kardex.numeroFactura();
      String tabnombre="AnuladosCreditoDebito - Nota #"+numeroFact;
      ventanas.add(kardex);
      tp_controles.addTab(tabnombre,kardex);
      seleccionarTab();
        
    }
    
    @Action
    public void AdminKardex(){
      VentKardex vk=new VentKardex(c,bodega,user);  
    //Almaceno la ventana en el vector de ventanas activas:
       ventanas.add(vk);
   
      tp_controles.addTab("Kardex - Admin",vk);
      seleccionarTab();
    
    }
    
    @Action
    public void AdminInventarios(){
      Inventario vi=new Inventario(c,bodega,user);  
    //Almaceno la ventana en el vector de ventanas activas:
       ventanas.add(vi);
   
      tp_controles.addTab("Invetario - Admin",vi);
      seleccionarTab();
    
    }
    
    @Action
    public void HistProductos(){
      Vent_histPro vhp=new Vent_histPro(c,bodega);  
    }
    
     @Action
    public void listaAuditorias(){
        panelAuditoria aud=new panelAuditoria(c);
        //Almaceno la ventana en el vector de ventanas activas:
        ventanas.add(aud);
   
        tp_controles.addTab("Auditoria - Auditoria",aud);
        seleccionarTab();  
    }
     
     @Action
    public void adminDeudas(){
        Vent_Deudas vd=new Vent_Deudas(c,user);
        //Almaceno la ventana en el vector de ventanas activas:
        ventanas.add(vd.contenedor);
        tp_controles.addTab("Deudas - Admin",vd.contenedor);
        seleccionarTab();  
    }
     
     @Action
    public void adminSeparados(){
        Vent_Separados vd=new Vent_Separados(c,user);
        //Almaceno la ventana en el vector de ventanas activas:
        ventanas.add(vd.contenedor);
        tp_controles.addTab("Deudas - Admin",vd.contenedor);
        seleccionarTab();  
    }
     
     
     @Action
    public void creditosOtorgados(){
        VentCredito cred=new VentCredito(c,bodega,user);
        //Almaceno la ventana en el vector de ventanas activas:
        ventanas.add(cred);
   
        tp_controles.addTab("Auditoria - Auditoria",cred);
        seleccionarTab();  
    }
     
     
    @Action
    public void ModificarParametros(){
    Vent_Parametros vp=new Vent_Parametros(c,bodega,user);
    }
    
    @Action
    public void EstablecerUsuarios(){
    Vent_Usuarios vu=new Vent_Usuarios(c,bodega,user);    
    
    }

    
    @Action
    public void NuevaBodega(){
      BodegaAdmin ba=new BodegaAdmin(c,bodega,user);  
    //Almaceno la ventana en el vector de ventanas activas:
       ventanas.add(ba);
   
      
      tp_controles.addTab("Bodega - Nueva",ba);
      seleccionarTab();
    
    
    }
    @Action
    public void NuevaCategoria(){
      CategoriasAdmin ca=new CategoriasAdmin(c,bodega,user);  
    //Almaceno la ventana en el vector de ventanas activas:
       ventanas.add(ca);
   
      tp_controles.addTab("Categoria - Nueva",ca);
      seleccionarTab();
    
    
    }
    
    @Action
    public void NuevaTerminal(){
      AdminTerminal at=new AdminTerminal(c,bodega,user);  
      //Almaceno la ventana en el vector de ventanas activas:
      ventanas.add(at);
      tp_controles.addTab("Terminal - Nuevo",at);
      seleccionarTab();
    
    
    }
    
    @Action
    public void reporteProductos(){
    reportesProductos rp=new reportesProductos(c,bodega,user);
    
    }
    
    @Action
    public void creaCuentas(){
    AdministradorCuentas ac=new AdministradorCuentas(c,bodega,user);
    String tabnombre="Contabilidad CuentasAdmin ";
      ventanas.add(ac);
      tp_controles.addTab(tabnombre,ac);
      seleccionarTab();
    }
    
    @Action
    public void diarioGeneral(){
    AdministradorDiario ad=new AdministradorDiario(c,bodega,user,this);
    String tabnombre="Contabilidad DiarioAdmin";
      ventanas.add(ad);
      tp_controles.addTab(tabnombre,ad);
      seleccionarTab();
    }
    
    @Action
    public void situacionInicial(){
        estadoInicial si=new estadoInicial(c);
       if(si.verificaExistencia()==false){
            String tabnombre="Contabilidad SituacionAdmin";
            ventanas.add(si);
            tp_controles.addTab(tabnombre,si);
            seleccionarTab();
        }
    }
    
    @Action
    public void cerrarTab(){
      int seleccion=tp_controles.getSelectedIndex();
      if(seleccion==0){
      
      }else{
      tp_controles.remove(tp_controles.getComponentAt(seleccion));
      opcionesVent.updateUI();
      tp_controles.updateUI();
      ventanas.removeElementAt(seleccion-1);
      refrescoBotones();
      
      }
      
    }
    
    @Action
    public void procesoCambios(){
          ProcedimientoCambio pc=new ProcedimientoCambio(c,user);
         
    }

    public boolean autorizacionCaduca(){
    boolean resultado=false;    
        int existe=0;
        String fecha=new java.sql.Date(System.currentTimeMillis()).toString();
        ResultSet resp=c.consultarBase("SELECT * FROM autorizacion where '"+fecha+"'<=fecha_fin;");
        existe=c.obtenerFilas(resp);
        if (existe==0){
        resultado=true;
        }
    return resultado;    
    }
    
    //No esta definido los Parametros Iniciales
    public boolean noDefParametros(){
    boolean resultado=false;
        int existe=0;
        ResultSet resp=c.consultarBase("SELECT * FROM parametros");
        existe=c.obtenerFilas(resp);
        if (existe==0){
        resultado=true;
        }
    
    return resultado;
    }
    
    //No esta definido ningun Diario en la Base
    public boolean noDefDiario(){
    boolean resultado=false;
        
        int existeDiario=0;
        ResultSet resp=c.consultarBase("SELECT * FROM diario d where cod_diario=(select max(cod_diario) from diario);");
        existeDiario=c.obtenerFilas(resp);
        if (existeDiario==0){
        resultado=true;
        }
    
    return resultado;
    }
    
    //No esta definido el estado de situacion Inicial
    public boolean noDefESI(){
    boolean resultado=false;
        
        int existeDiario=0;
        ResultSet resp=c.consultarBase("SELECT * FROM estadoinicial e where diario=(select max(cod_diario) from diario);");
        existeDiario=c.obtenerFilas(resp);
        if (existeDiario==0){
        resultado=true;
        }
    
    return resultado;
    }
    
    public boolean noDefComprobante(String Comprobante){
    boolean respuesta=false;
    
     int existeComprobante=0;
        ResultSet resp=c.consultarBase("SELECT * FROM tipo_comprobante where nombre like '"+Comprobante+"' and cod_autorizacion=(SELECT max(cod_auto) FROM autorizacion);");
        existeComprobante=c.obtenerFilas(resp);
        if (existeComprobante==0){
        respuesta=true;
        }
    
    return respuesta;
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        mainPanel = new javax.swing.JPanel();
        herramientas = new javax.swing.JToolBar();
        opcionesVent = new javax.swing.JToolBar();
        tp_controles = new javax.swing.JTabbedPane();
        menuBar = new javax.swing.JMenuBar();
        statusPanel = new javax.swing.JPanel();
        javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
        statusMessageLabel = new javax.swing.JLabel();
        statusAnimationLabel = new javax.swing.JLabel();
        progressBar = new javax.swing.JProgressBar();
        lbl_et = new javax.swing.JLabel();
        lbl_etiqueta = new javax.swing.JLabel();

        mainPanel.setName("mainPanel"); // NOI18N

        herramientas.setFloatable(false);
        herramientas.setRollover(true);
        herramientas.setName("herramientas"); // NOI18N

        opcionesVent.setFloatable(false);
        opcionesVent.setRollover(true);
        opcionesVent.setName("opcionesVent"); // NOI18N

        tp_controles.setTabPlacement(javax.swing.JTabbedPane.BOTTOM);
        tp_controles.setName("tp_controles"); // NOI18N
        tp_controles.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                tp_controlesStateChanged(evt);
            }
        });
        tp_controles.addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentMoved(java.awt.event.ComponentEvent evt) {
                tp_controlesComponentMoved(evt);
            }
        });
        tp_controles.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                tp_controlesFocusGained(evt);
            }
        });
        tp_controles.addAncestorListener(new javax.swing.event.AncestorListener() {
            public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
            }
            public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
            }
            public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
                tp_controlesAncestorRemoved(evt);
            }
        });

        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
        mainPanel.setLayout(mainPanelLayout);
        mainPanelLayout.setHorizontalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(tp_controles, javax.swing.GroupLayout.DEFAULT_SIZE, 776, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                .addComponent(herramientas, javax.swing.GroupLayout.DEFAULT_SIZE, 709, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addComponent(opcionesVent, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(mainPanelLayout.createSequentialGroup()
                        .addComponent(opcionesVent, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, mainPanelLayout.createSequentialGroup()
                        .addComponent(herramientas, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                .addComponent(tp_controles, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE))
        );

        menuBar.setName("menuBar"); // NOI18N

        statusPanel.setName("statusPanel"); // NOI18N

        statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N

        statusMessageLabel.setName("statusMessageLabel"); // NOI18N

        statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N

        progressBar.setName("progressBar"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(administrador.AdministradorApp.class).getContext().getResourceMap(AdministradorView.class);
        lbl_et.setText(resourceMap.getString("lbl_et.text")); // NOI18N
        lbl_et.setName("lbl_et"); // NOI18N

        lbl_etiqueta.setText(resourceMap.getString("lbl_etiqueta.text")); // NOI18N
        lbl_etiqueta.setName("lbl_etiqueta"); // NOI18N
        lbl_etiqueta.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                lbl_etiquetaKeyTyped(evt);
            }
        });

        javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
        statusPanel.setLayout(statusPanelLayout);
        statusPanelLayout.setHorizontalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(statusPanelLayout.createSequentialGroup()
                .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(statusPanelLayout.createSequentialGroup()
                        .addGap(56, 56, 56)
                        .addComponent(statusMessageLabel))
                    .addGroup(statusPanelLayout.createSequentialGroup()
                        .addComponent(lbl_et)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(lbl_etiqueta)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 534, Short.MAX_VALUE)
                        .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(statusAnimationLabel)))
                .addContainerGap())
            .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 776, Short.MAX_VALUE)
        );
        statusPanelLayout.setVerticalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, statusPanelLayout.createSequentialGroup()
                .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 10, Short.MAX_VALUE)
                .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(statusPanelLayout.createSequentialGroup()
                        .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(statusMessageLabel)
                            .addComponent(statusAnimationLabel)
                            .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(3, 3, 3))
                    .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lbl_et)
                        .addComponent(lbl_etiqueta))))
        );

        setComponent(mainPanel);
        setMenuBar(menuBar);
        setStatusBar(statusPanel);
    }// </editor-fold>//GEN-END:initComponents

private void tp_controlesStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_tp_controlesStateChanged
//refrescoBotones();    
}//GEN-LAST:event_tp_controlesStateChanged

public void refrescoBotones(){
// TODO add your handling code here:
    //Limpio las barras de Herramientas
    herramientas.removeAll();
    opcionesVent.removeAll();
    
    //Establesco la configuracion de los Etiquetas de los TABS:
    int seleccion=tp_controles.getSelectedIndex();
   //System.out.println("La fila seleccionada es:"+seleccion);
    String documento=tp_controles.getTitleAt(seleccion);
    lbl_etiqueta.setText(documento);
        
    //Pregunto si la ventana no es la de la Presentacion:
    if(seleccion!=0){
    llenoBotonesParticulares(seleccion);
    llenoBotonesPermanentes();
    }
    
    //Actualizo las Opciones de Ventana
    herramientas.updateUI();
    opcionesVent.updateUI();
    
    
    
    

}


@Action 
public void llenoBotonesParticulares(int seleccion) {
//Lleno los Botones Permanentes de los diferentes Paneles:
//Especifico las Acciones que realizara cada boton:  
        String BotonesSelec = lbl_etiqueta.getText();
        String[] bcategoria = BotonesSelec.split(" ");
        BotonesSelec = bcategoria[0];
       //System.out.println("Botones de :" + BotonesSelec);

        if (BotonesSelec.equals("Facturacion")) {
        //Establesco las Acciones para los botones del panel de Facturacion:
            final Facturacion f = (Facturacion) ventanas.elementAt(seleccion - 1);

            //Creo un vector que contiene las acciones de los diferentes elementos del panel:
            Vector BotonesVentana = new Vector();
            BotonesVentana.add(f.bt_registra);
            BotonesVentana.add(f.bt_ap);
            BotonesVentana.add(f.bt_borrar);
            BotonesVentana.add(f.bt_limpiar);
            BotonesVentana.add(f.bt_mod);
            BotonesVentana.add(f.bt_hist);
           
            BotonesVentana.add(f.btn_BuscaFac);

            
            
            
            //Creo un boton con los iconos para los botones especificados.
            String[] IconBotones = new String[]{"registrar.png", "addPro.png", "quitPro.png", "limpiar.png", "cliente.png", "historial.png","buscar.png"};
            //Creo el boton
            javax.swing.JButton boton = new javax.swing.JButton();
            int contador = 0;
            
            //Establesco para cada boton su accion en funcion de su accion en cada Panel:
            for (contador = 0; contador < BotonesVentana.size(); contador++) {
                //Pregunto si el boton a asignar se encuentra visible dentro del panel:
                final JButton botFact = (JButton) BotonesVentana.elementAt(contador);
                if (botFact.isVisible()) {
                    //Agrego las acciones del Boton:
                    boton = new javax.swing.JButton();
                    boton.addActionListener(new java.awt.event.ActionListener() {
                    public void actionPerformed(java.awt.event.ActionEvent evt) {
                            if (botFact.getText().equals("Crea-Modificar Cliente")) {
                                f.cmCliente();
                            }
                            if (botFact.getText().equals("Historia de Facturas")) {
                                f.muestraHist();
                            }
                            if (botFact.getText().equals("Aderir Producto")) {
                                f.addProd();
                            }
                            if (botFact.getText().equals("Borrar Articulo")) {
                                f.borrPro();
                            }
                            if (botFact.getText().equals("Registrar")) {
                                f.aplastoRegistrar();
                            }
                            if (botFact.getText().equals("Limpiar Todo")) {
                                f.limpiar();
                            }
                            if (botFact.getText().equals("Anular")) {
                                f.anulaFactura();
                            }
                            if (botFact.getText().equals("Buscar")) {
                                f.buscarFactura();
                            }
                        }
                    });
                    //Le doy el Icono
                    ImageIcon icon = createImageIcon(IconBotones[contador], "Nueva Factura");
                    boton.setIcon(icon);
                    //boton.setText(botFact.getText());
                    herramientas.add(boton);
                   
                    
                }
            }

        }
       

        if (BotonesSelec.equals("NotadeVenta")) {
        //Establesco las Acciones para los botones del panel de Facturacion:
            final Nota_de_Venta f = (Nota_de_Venta) ventanas.elementAt(seleccion - 1);

            //Creo un vector que contiene las acciones de los diferentes elementos del panel:
            Vector BotonesVentana = new Vector();
            BotonesVentana.add(f.bt_registra);
            BotonesVentana.add(f.bt_ap);
            BotonesVentana.add(f.bt_borrar);
            BotonesVentana.add(f.bt_limpiar);
            BotonesVentana.add(f.bt_mod);
            BotonesVentana.add(f.bt_hist);
            BotonesVentana.add(f.btn_anulaFac);
            BotonesVentana.add(f.btn_BuscaFac);

            

            //Creo un boton con los iconos para los botones especificados.
            String[] IconBotones = new String[]{"registrar.png", "addPro.png", "quitPro.png", "limpiar.png", "cliente.png", "historial.png","quitaDet.png","buscar.png"};
            //Creo el boton
            javax.swing.JButton boton = new javax.swing.JButton();
            int contador = 0;
            
            //Establesco para cada boton su accion en funcion de su accion en cada Panel:
            for (contador = 0; contador < BotonesVentana.size(); contador++) {
                //Pregunto si el boton a asignar se encuentra visible dentro del panel:
                final JButton botFact = (JButton) BotonesVentana.elementAt(contador);
                if (botFact.isVisible()) {
                    
                   //System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
                   //System.out.println("El Boton que revisa es:"+botFact.getText()+"  "+botFact.isVisible());
                    //Agrego las acciones del Boton:
                    boton = new javax.swing.JButton();
                    boton.addActionListener(new java.awt.event.ActionListener() {
                    public void actionPerformed(java.awt.event.ActionEvent evt) {
                            if (botFact.getText().equals("Crea-Modificar Cliente")) {
                                f.cmCliente();
                            }
                            if (botFact.getText().equals("Historia de Ventas")) {
                                f.muestraHist();
                            }
                            if (botFact.getText().equals("Aderir Producto")) {
                                f.addProd();
                            }
                            if (botFact.getText().equals("Borrar Articulo")) {
                                f.borrPro();
                            }
                            if (botFact.getText().equals("Registrar")) {
                                f.aplastoRegistrar();
                            }
                            if (botFact.getText().equals("Limpiar Todo")) {
                                f.limpiar();
                            }
                            if (botFact.getText().equals("Anular")) {
                                f.anulaFactura();
                            }
                            if (botFact.getText().equals("Buscar")) {
                                f.buscarFactura();
                            }
                        }
                    });
                    //Le doy el Icono
                    ImageIcon icon = createImageIcon(IconBotones[contador], "Nueva Factura");
                    boton.setIcon(icon);
                    //boton.setText(botFact.getText());
                    herramientas.add(boton);
                   
                    
                }
            }

        }
        
            
    }

    @Action
    public void llenoBotonesPermanentes() {

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(administrador.AdministradorApp.class).getContext().getActionMap(AdministradorView.class, this);
        //Agrego el Boton de Cerrar
        javax.swing.JButton botonCerrar = new javax.swing.JButton();
        botonCerrar.setAction(actionMap.get("cerrarTab"));
        ImageIcon icon = createImageIcon("cerrar.png", "Nueva Factura");
        botonCerrar.setIcon(icon);
        botonCerrar.setText("");
        opcionesVent.add(botonCerrar);
        herramientas.updateUI();
        opcionesVent.updateUI();
        
    }

    public ImageIcon createImageIcon(String path, String descripcion) {

        java.net.URL imgURL = getClass().getResource("/administrador/resources/imagenes/" + path);
        if (imgURL != null) {
            return new ImageIcon(imgURL, descripcion);
        } else {
            System.err.println("No se pudo encontrar el archivo de la imagen:" + path);
            return null;
        }
    }
private void lbl_etiquetaKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_lbl_etiquetaKeyTyped
// TODO add your handling code here:    
}//GEN-LAST:event_lbl_etiquetaKeyTyped

private void tp_controlesComponentMoved(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tp_controlesComponentMoved
// TODO add your handling code here:
    
}//GEN-LAST:event_tp_controlesComponentMoved

private void tp_controlesAncestorRemoved(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_tp_controlesAncestorRemoved
// TODO add your handling code here:
    
}//GEN-LAST:event_tp_controlesAncestorRemoved

private void tp_controlesFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tp_controlesFocusGained
// TODO add your handling code here:
    
    refrescoBotones();
}//GEN-LAST:event_tp_controlesFocusGained

    // Variables declaration - do not modify//GEN-BEGIN:variables
    public javax.swing.JToolBar herramientas;
    private javax.swing.JLabel lbl_et;
    private javax.swing.JLabel lbl_etiqueta;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JToolBar opcionesVent;
    private javax.swing.JProgressBar progressBar;
    private javax.swing.JLabel statusAnimationLabel;
    private javax.swing.JLabel statusMessageLabel;
    private javax.swing.JPanel statusPanel;
    public javax.swing.JTabbedPane tp_controles;
    // End of variables declaration//GEN-END:variables

    private final Timer messageTimer;
    private final Timer busyIconTimer;
    private final Icon idleIcon;
    private final Icon[] busyIcons = new Icon[15];
    private int busyIconIndex = 0;

    private JDialog aboutBox;
}
